home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / outcode.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  994 b   |  31 lines

  1. /*
  2.                         O U T C O D E . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. void outcode(ESTRUC_ *ep, int value, register unsigned size)
  8. {
  9.     register unsigned
  10.         codelen;
  11.     char
  12.         buffer[2];
  13.  
  14.     codelen = ep->code ?                    /* use local codelen in register */
  15.                 ep->codelen
  16.             :
  17.                 0;                          /* 0 if not yet any code */
  18.  
  19.     if (size == sizeof(char))               /* assign char to write */
  20.         buffer[0] = (char)value;
  21.     else                                    /* use char[2] as intermediate */
  22.         *(INT16 *)buffer = (INT16)value;    /* to store INT16 value        */
  23.  
  24.                                             /* make room for new code */
  25.     ep->code = xrealloc(ep->code, (codelen + size) * sizeof(char));
  26.  
  27.                                             /* append the new code */
  28.     memcpy(ep->code + codelen, buffer, size);
  29.  
  30.     ep->codelen = codelen + size;           /* update the codelen-counter */
  31. }